home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / newsgroups / misc.20020314-20021006 / 000061_fdc@columbia.edu_Sun Apr 28 13:59:50 EDT 2002.msg < prev    next >
Text File  |  2020-01-01  |  9KB  |  201 lines

  1. Article: 13352 of comp.protocols.kermit.misc
  2. Path: newsmaster.cc.columbia.edu!news.columbia.edu!news-not-for-mail
  3. From: fdc@columbia.edu (Frank da Cruz)
  4. Newsgroups: comp.protocols.kermit.misc
  5. Subject: Re: a bug on GNU/linux: speed reset to unintended value occasionally.
  6. Date: 28 Apr 2002 13:59:13 -0400
  7. Organization: Columbia University
  8. Lines: 184
  9. Message-ID: <aahd9h$qii$1@watsol.cc.columbia.edu>
  10. References: <3CAFF81C.8039CBF8@yk.rim.or.jp> <3CCA03A1.59EF10C9@yk.rim.or.jp> <aaedmj$oo5$1@watsol.cc.columbia.edu> <3CCB4F33.4F2B2C62@yk.rim.or.jp>
  11. NNTP-Posting-Host: watsol.cc.columbia.edu
  12. X-Trace: newsmaster.cc.columbia.edu 1020016755 18069 128.59.39.139 (28 Apr 2002 17:59:15 GMT)
  13. X-Complaints-To: postmaster@columbia.edu
  14. NNTP-Posting-Date: 28 Apr 2002 17:59:15 GMT
  15. Xref: newsmaster.cc.columbia.edu comp.protocols.kermit.misc:13352
  16.  
  17. In article <3CCB4F33.4F2B2C62@yk.rim.or.jp>,
  18. : ...
  19. : Pseudo random generation for testing purposes.
  20. : You know I am impressed with the KERMIT, the software, more as I learn
  21. : more about it (after reading first about it in BYTE in the early
  22. : 1980's.)
  23. In English or Japanese? (Was there a Japanese edition of BYTE?)
  24.  
  25. : Maybe you should promote the study of source code of KERMIT among
  26. : software engineering courses at colleges, etc.. 
  27. Kermit has been, and maybe still is, taught in some university
  28. telecommunications and software engineering courses.  One of the main
  29. uses for the original Kermit book was as a textbook.  If we knew how to
  30. promote Kermit any better than we do already, we would do it :-)  The
  31. C-Kermit CDROM page:
  32.  
  33.   http://www.columbia.edu/kermit/ck70cd.html
  34.  
  35. suggests that the enormous source-code base might be a useful object of
  36. study.  At least one other programming textbook was written, using Kermit
  37. source code as a base:
  38.  
  39.   Kelly-Bootle, Stan,
  40.   "680x0 Programming By Example",
  41.   Howard W Sams & Co, Indianapolis IN (1988),
  42.   ISBN 0-672-22544-1.
  43.  
  44. In this case it was the Alpha Micro version written by Rob Rubendunst:
  45.  
  46.   ftp://kermit.columbia.edu/kermit/c/am*.*
  47.  
  48. Of course other books have featured Kermit protocol and/or code too,
  49. including:
  50.  
  51.   Kientzle, Tim,
  52.   "The Working Programmer's Guide to Serial Protocols",
  53.   Coriolis Group Books, Scottsdale AZ (1995),
  54.   ISBN 1-883577-20-9
  55.  
  56.   Quarterman, John,
  57.   "The Matrix: Computer Networks and Conferencing Systems Worldwide",
  58.   Digital Press, Bedford MA (1990),  
  59.   ISBN 1-55558-033-5
  60.  
  61.   McNamara, John,
  62.   "Technical Aspects of Data Communication", Third Edition,
  63.   Digital Press, Bedford MA (1988),
  64.   ISBN 1-55558-007-6
  65.  
  66.   Campbell, Joe,
  67.   "C Programmer's Guide to Serial Communications",
  68.   Howard W Sams & Co, Indianapolis IN (1987),  
  69.   ISBN 0-672-22584-0
  70.  
  71.   Gofton, Peter W.
  72.   "Mastering Serial Communications",
  73.   SYBEX, Berkeley CA (1986),
  74.   ISBN 0-89588-180-2
  75.  
  76. And somewhat more sensationally:
  77.  
  78.   Stoll, Clifford:
  79.   "The Cuckoo's Egg: Tracking a Spy Through the Maze of Computer Espionage",
  80.   Doubleday, New York (1989),
  81.   ISBN 0-385-24946-2
  82.  
  83. Most of the books listed above speak of Kermit as a "serial protocol",
  84. i.e. to be used only with serial ports and modems.  In fact, Kermit is a
  85. well-structured layered protocol that can be used over any medium or
  86. connection type (e.g. Telnet, SSH).
  87.  
  88. In particular, it is perfect for use over UDP, and you might see some
  89. interesting applications for this arising in the future.
  90.  
  91. : I am saying this because LINUX is all the rage as open source software
  92. : and it is quite interesting to see the different coding styles adopted
  93. : for portability. Linux uses different directories to support
  94. : different architecture...
  95. :
  96. There are many approaches to portability, none of them perfect.  There are
  97. also different definitions of portability.  These days many people think
  98. portability means that the same code can be built for Linux and maybe one
  99. or two other Unix varieties, using GNU tools (autoconfig, etc).
  100.  
  101. Although there was a Kermit program for Unix as early as 1982, C-Kermit
  102. did not appear until 1985.  I decided to start over, with a modular design
  103. and portability as a top priority: C-Kermit would consist of a totally
  104. portable Kermit protocol core, a "C-Library" portable user interface (but
  105. one that could be replaced with any other kind of user interface, e.g. GUI
  106. as on the Macintosh, which was actually done), and platform-dependent
  107. modules for input/output (file i/o, communications i/o, and CONNECT
  108. (terminal) mode).
  109.  
  110. As the years went by, we ported C-Kermit to 12 distinct operating system
  111. families: Unix, VMS, AOS/VS, VOS, OS-9, Apollo Aegis, the Atari ST, the
  112. Commodore Amiga, the Macintosh, Plan 9 from Bell Labs, Microsoft Windows,
  113. and IBM OS/2.
  114.  
  115. The platform-specific modules for most of these platforms -- VMS, AOS/VS,
  116. OS-9, VOS, Mac -- fit the model quite well, and contain very few #ifdefs.
  117.  
  118. The Unix modules, on the other hand, are amazing to behold because the
  119. differences among Unix variations (Linux, BSD, AIX, Solaris, SCO, etc) and
  120. the releases of each one (AIX 2.1, AIX 3.2.5, AIX 4.1, AIX 4.3, AIX 5.1)
  121. are far greater than we ever foresaw in 1985 -- in those days, Unix was
  122. known as a portable operating system, and in fact there were only two
  123. main branches: BSD and System V.
  124.  
  125. But the i/o modules are quite large.  This presents a dilemma: should we
  126. create separate i/o modules for AIX, Solaris, HP-UX, IRIX, SCO, and so on?
  127. If so, there would be tens of thousands of lines of duplicated code that
  128. would have to be changed in many places if a bug needed to be fixed or the
  129. API updated.  Or do we keep all the shared code in one place and handle
  130. the product-specific differences with #ifdefs?
  131.  
  132. : ... because Linux Torvalds decided at the early stage to do away with
  133. : "#ifdef/#else/#endif#" as a means of supporting different CPU
  134. : architecture. But KERMIT uses "#if/#else" heavily in order to support
  135. : different platforms.
  136. :
  137. Linus had one operating system and one compiler to consider: that's a
  138. much smaller problem space.
  139.  
  140. : Surely the difference has to do with the sheer
  141. : number of source files and the distributed nature of developers.
  142. :
  143. We chose #ifdefs for the reasons explained here:
  144.  
  145.   http://www.columbia.edu/kermit/ckcplm.html#x3
  146.  
  147. : For a beginning programmers who would grow to be a professional
  148. : programmer (or for that matter, who would not be a professional
  149. : programmer)
  150. : to learn the different styles and the analyzing the rational of such
  151. : styles would be very instrumental. Programming in the small and
  152. : programming in the large is very different and seeing
  153. : large live code such as KERMIT in action is a good thing IMHO.
  154. I think so too, but most people don't care any more now that, for most
  155. developers, only Windows and Linux exist.  Nevertheless, there are still
  156. a few other projects besides Kermit that try to be portable to as many
  157. platforms as possible, both old and new, such as:
  158.  
  159.   http://www.info-zip.org/pub/infozip/
  160.  
  161. : Free Software Foundation of GNU fame used to mention
  162. : in its documentation about calling for volunteers and
  163. : college teachers who may use GNU software as a course material to
  164. : train students (and at the same time to debug and improve the code).
  165. : KERMIT probably is a very good source material for an advanced 
  166. : programming course today.
  167. :
  168. I agree.  In a software engineering course with a laboratory, it can
  169. certainly fit into a semester's project, perhaps along with other
  170. projects.  Its behavior can be studied -- performance, error recovery,
  171. and so on.  Also, since the protocol is extensible, it can form the basis
  172. for more ambitious projects -- for example, a network layer can be added
  173. for routing (I know of a case where this was done quite successfully).
  174.  
  175. I have a few other ideas for software engineering projects too.
  176.  
  177. : ... and today now the inclusion of Kerberos and 
  178. : scp/ssh functionalities would be very 
  179. : instructive for secure Internet programming. 
  180. We like to think so, and if we did not have to focus constantly on raising
  181. money to pay for the continued existence of the Kermit Project, we would
  182. spend more time writing books and papers on topics like this (and for that
  183. matter we would even spend more time writing software :-)  Unfortunately
  184. there is no other support for the kind of work we do, especially not in
  185. these hard economic times.
  186.  
  187. : PS: BTW, I am not sure if this is the right place, but my sympathies to
  188. : those whose life were affected by the event in last September over
  189. : there.  The other day I saw the picture on the web page of KERMIT and
  190. : thought about it for a moment, and noticed the small letters next to the
  191. : photo.
  192. :
  193. Thanks for the kind thoughts.  A few people suggested we remove the images
  194. of the World Trade Center, but most people are supportive of keeping them.
  195.  
  196. - Frank
  197.